package main

import "fmt"

type Person struct {
	Name string
}

func (p Person) PrintInfo() {
	fmt.Println(p.Name)
}

func (p *Person) SetPerson() {

}

//结构体值接收者 和结构体指针接收者的区别
//结构体值接收者实例化后的结构体 值类型和 结构体指针类型都可以赋值给接口变量

//指针接收者：
//如果结构体中的方法是指针接收者，那么实例化后的的结构体指针类型都可以赋值给接口变量，结构体值类型没法赋值给接口变量
func main() {
	//var p Person //第一种实例化结构体
	//var p = new(Person) //第二种实例化结构体
	var p = &Person{} //第三种 实例化结构体
	p.Name = "sd"     //等价于 *&p.Name = "2"
	p.PrintInfo()

}
